#include <iostream>
#include <string>
#include <sstream>
#include "Player.h"
using namespace std;

/**
  * Constructor con todos los atributos
  *
  */
Player::Player (const int x, const int y, const int z, const string name, const int score) {
	setX(x);
	setY(y);
	setZ(z);
	setName(name);
	setScore(score);
}

/**
  * Constructor copia
  *
  */
Player::Player (const Player &player) {
	setX(player.getX());
	setY(player.getY());
	setZ(player.getZ());
	setName(player.getName());
	setScore(player.getScore());
}

/**
  * Destructor
  *
  */
Player::~Player () {
}

/* Recupera la puntuación */
int Player::getScore () const {
	return _score;
}

/* Setea la puntuación */
void Player::setScore(const int score) {
	_score = score;
}

/**
  * Sobreescritura del operador de asignación
  *
  */
Player& Player::operator= (const Player &e) {

	if (this != &e) {
		this->setX(e.getX());
		this->setY(e.getY());
		this->setZ(e.getZ());
		this->setName(e.getName());
		this->setScore(e.getScore());
	}
	return *this;
}

/**
  * Devuelve un cadena con todos los atributos del objeto, para ser visualizados
  *
  */
string Player::toString() const {
   stringstream ss;
   ss << Entity3D::toString() << " (Score: " << getScore() << ")";
   return ss.str();
}
